package pzl.com.strategypattern.interfaces;
/***
 * 策略模式属于对象的行为模式。其用意是针对一组算法，将每一个算法封装到具有共同接口的独立的类中，
 * 从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
 * <p/>
 * 策略模式是对算法的包装，是把使用算法的责任和算法本身分割开来，委派给不同的对象管理。
 * 策略模式通常把一个系列的算法包装到一系列的策略类里面，作为一个抽象策略类的子类。
 * <p/>
 * 对于一系列具体的策略算法，大家的地位是完全一样的，正因为这个平等性，才能实现算法之间可以相互替换。
 * 所有的策略算法在实现上也是相互独立的，相互之间是没有依赖的
 * <p/>
 * 策略模式在每一个时刻只能使用一个具体的策略实现对象，虽然可以动态地在不同的策略实现中切换，但是同时只能使用一个
 * <p/>
 * 实现某一相同的功能有诸多不同的算法或策略，如：查找、排序等等
 */

/**
 * 超市商品计价策略
 *
 * @author zl.peng
 * @version [1.0, 2016-11-02]
 */
public interface IPriceStrategy {

    /**
     * 计算商品的价格
     *
     * @param goodsPrice
     * @return
     */
    double calcPrice(double goodsPrice);
}

